package IU;

import Controladores.CtrlArea;
import Controladores.CtrlModulo;
import Controladores.CtrlRol;
import Controladores.CtrlRolAreaModulo;
import Entidades.Area;
import Entidades.Modulo;
import Entidades.Rol;
import Entidades.Rolareamodulo;
import Entidades.Proveedorproducto;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import utiles.Validador;

public class ABMModulo extends javax.swing.JFrame {

    private String nombreModulo, fechaAlta, fechaBaja;
    Modulo modulo;
    TablaPersonalizada tableModel;
    private List listaA;
    private List listaM;
    private List listaR;
    private List listaRAM;
    CtrlArea controladorArea;
    CtrlModulo controladorModulo;
    CtrlRol controladorRol;
    CtrlRolAreaModulo controladorRolAreaModulo;
    Validador validador;
    Vector estosModulos = new Vector();
    private List<Modulo> listaOperar = new ArrayList<Modulo>();

    public ABMModulo(String o) {
        initComponents();
        String operario = o;
        jTextFieldUsuario5.setText(operario);
        controladorArea = new CtrlArea();
        controladorModulo = new CtrlModulo();
        controladorRol = new CtrlRol();
        controladorRolAreaModulo = new CtrlRolAreaModulo();
        //MODIFICAR/ELIMINAR: cargar jtablemodulos
        cargarTabla();
        //LISTAR: jcomboboxnombremodulo
        //cargarComboModulos();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jButtonGuardar = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jLabel12NombreModulo = new javax.swing.JLabel();
        jTextFieldNombreModulo = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTableModulos = new javax.swing.JTable();
        jPanel4 = new javax.swing.JPanel();
        eliminar = new javax.swing.JButton();
        modificar = new javax.swing.JButton();
        jLabel14NombreModulo = new javax.swing.JLabel();
        jTextFieldNombre = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        ButtBuscar = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        jScrollPane7 = new javax.swing.JScrollPane();
        jTableModulosListar = new javax.swing.JTable();
        jButtonSalir = new javax.swing.JButton();
        jPanel18 = new javax.swing.JPanel();
        jTextFieldUsuario5 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Gestionar Módulos - Sistema Gestor de Pesaje para Bodegas");

        jTabbedPane1.setForeground(new java.awt.Color(102, 0, 102));
        jTabbedPane1.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        jTabbedPane1.setMinimumSize(new java.awt.Dimension(136, 76));
        jTabbedPane1.setPreferredSize(new java.awt.Dimension(647, 1240));

        jButtonGuardar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        jButtonGuardar.setForeground(new java.awt.Color(102, 0, 102));
        jButtonGuardar.setText("Guardar");
        jButtonGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonGuardarActionPerformed(evt);
            }
        });

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Modulo", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N

        jLabel12NombreModulo.setFont(new java.awt.Font("Segoe UI", 1, 11)); // NOI18N
        jLabel12NombreModulo.setText("Nombre:");

        jTextFieldNombreModulo.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap(42, Short.MAX_VALUE)
                .addComponent(jLabel12NombreModulo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldNombreModulo, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(30, 30, 30))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGap(50, 50, 50)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel12NombreModulo)
                    .addComponent(jTextFieldNombreModulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(70, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonGuardar))
                .addContainerGap(48, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(36, 36, 36)
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(38, 38, 38)
                .addComponent(jButtonGuardar)
                .addContainerGap(127, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Alta Módulo", jPanel1);

        jScrollPane2.setAutoscrolls(true);
        jScrollPane2.setPreferredSize(new java.awt.Dimension(454, 404));

        jScrollPane3.setPreferredSize(new java.awt.Dimension(452, 902));

        jTableModulos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre de Módulos", "Fecha de Baja"
            }
        ));
        jTableModulos.setAutoscrolls(false);
        jTableModulos.setFillsViewportHeight(true);
        jTableModulos.setMaximumSize(new java.awt.Dimension(2147483647, 56));
        jTableModulos.setMinimumSize(new java.awt.Dimension(55, 55));
        jTableModulos.setPreferredSize(new java.awt.Dimension(200, 42));
        jTableModulos.setRowHeight(14);
        jTableModulos.getTableHeader().setResizingAllowed(false);
        jTableModulos.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableModulosMouseClicked(evt);
            }
        });
        jScrollPane3.setViewportView(jTableModulos);

        jScrollPane2.setViewportView(jScrollPane3);

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N

        eliminar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        eliminar.setForeground(new java.awt.Color(102, 0, 102));
        eliminar.setText("Eliminar");
        eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                eliminarActionPerformed(evt);
            }
        });

        modificar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        modificar.setForeground(new java.awt.Color(102, 0, 102));
        modificar.setText("Modificar");
        modificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                modificarActionPerformed(evt);
            }
        });

        jLabel14NombreModulo.setFont(new java.awt.Font("Segoe UI", 1, 11)); // NOI18N
        jLabel14NombreModulo.setText("Nombre:");

        jTextFieldNombre.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(modificar)
                        .addGap(32, 32, 32)
                        .addComponent(eliminar))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel14NombreModulo)
                        .addGap(34, 34, 34)
                        .addComponent(jTextFieldNombre, javax.swing.GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)))
                .addGap(30, 30, 30))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap(35, Short.MAX_VALUE)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel14NombreModulo, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(34, 34, 34)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(modificar)
                    .addComponent(eliminar)))
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 506, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(95, Short.MAX_VALUE))
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(81, 81, 81))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(88, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Modificar/Eliminar Módulo", jPanel2);

        jScrollPane5.setAutoscrolls(true);

        ButtBuscar.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos de Módulos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N

        jScrollPane4.setAutoscrolls(true);
        jScrollPane4.setPreferredSize(new java.awt.Dimension(454, 404));

        jScrollPane7.setPreferredSize(new java.awt.Dimension(452, 902));

        jTableModulosListar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre de Módulos", "Fecha de Baja"
            }
        ));
        jTableModulosListar.setAutoscrolls(false);
        jTableModulosListar.setFillsViewportHeight(true);
        jTableModulosListar.setMaximumSize(new java.awt.Dimension(2147483647, 56));
        jTableModulosListar.setMinimumSize(new java.awt.Dimension(55, 55));
        jTableModulosListar.setPreferredSize(new java.awt.Dimension(200, 42));
        jTableModulosListar.setRowHeight(14);
        jTableModulosListar.getTableHeader().setResizingAllowed(false);
        jTableModulosListar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableModulosListarMouseClicked(evt);
            }
        });
        jScrollPane7.setViewportView(jTableModulosListar);

        jScrollPane4.setViewportView(jScrollPane7);

        javax.swing.GroupLayout ButtBuscarLayout = new javax.swing.GroupLayout(ButtBuscar);
        ButtBuscar.setLayout(ButtBuscarLayout);
        ButtBuscarLayout.setHorizontalGroup(
            ButtBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ButtBuscarLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 477, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(48, Short.MAX_VALUE))
        );
        ButtBuscarLayout.setVerticalGroup(
            ButtBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ButtBuscarLayout.createSequentialGroup()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 276, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        jScrollPane5.setViewportView(ButtBuscar);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(87, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 330, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(41, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Listar Módulos", jPanel3);

        jButtonSalir.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        jButtonSalir.setForeground(new java.awt.Color(102, 0, 102));
        jButtonSalir.setText("Salir");
        jButtonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSalirActionPerformed(evt);
            }
        });

        jPanel18.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Usuario Registrado", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 11), new java.awt.Color(102, 0, 102))); // NOI18N
        jPanel18.setForeground(new java.awt.Color(102, 0, 102));

        jTextFieldUsuario5.setEditable(false);
        jTextFieldUsuario5.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jTextFieldUsuario5.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        jTextFieldUsuario5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldUsuario5ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel18Layout = new javax.swing.GroupLayout(jPanel18);
        jPanel18.setLayout(jPanel18Layout);
        jPanel18Layout.setHorizontalGroup(
            jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel18Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextFieldUsuario5, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel18Layout.setVerticalGroup(
            jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel18Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextFieldUsuario5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 633, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jPanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(35, 35, 35))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jButtonSalir)
                        .addGap(27, 27, 27))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 422, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(44, Short.MAX_VALUE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(jPanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 298, Short.MAX_VALUE)
                .addComponent(jButtonSalir)
                .addGap(28, 28, 28))
        );

        jTabbedPane1.getAccessibleContext().setAccessibleName("Alta Modulo");

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-962)/2, (screenSize.height-502)/2, 962, 502);
    }// </editor-fold>//GEN-END:initComponents

    private void refresh() {
        jTextFieldNombreModulo.setText("");
    }

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSalirActionPerformed
    this.dispose();
}//GEN-LAST:event_jButtonSalirActionPerformed

////////////////////////////ALTA////////////////////////////
private void jButtonGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGuardarActionPerformed
    nombreModulo = jTextFieldNombreModulo.getText();
    fechaAlta = Validador.getInstance().obtenerFechaSistema();
    fechaBaja = "";
    if (verificar(nombreModulo)) {
        //System.out.println("dentro del if, pasó el verificar");
        Modulo mo = new Modulo();
        mo.setNombreModulo(nombreModulo);
        //System.out.println("Modulo " + mo.toString());
        try {
            controladorModulo.guardarModulo(mo);
            //System.out.println("guardó el Modulo nuevo");
            JOptionPane.showMessageDialog(this, "El nuevo módulo se ha guardado exitosamente", "Alta Módulo", JOptionPane.INFORMATION_MESSAGE);
        } catch (Exception e) {
            //System.out.println(e);
            //System.out.println("No se pudo guardar el Modulo nuevo");
        }
    }
    refresh();//se limpia el nombre nuevo
    cargarTabla();
    //cargarComboModulos();
}//GEN-LAST:event_jButtonGuardarActionPerformed

    //al iniciar componentes, al guardar (alta), se carga este combo q está en la ficha LISTAR: jcomboboxnombremodulo
    private void cargarComboModulos(){
//        try {
//            listaM = controladorModulo.buscarTodosModulo();
//        } catch (Exception e) {
//            //System.out.println(e);
//            //System.out.println("No se pudieron recuperar los Modulos");
//        }
//        jComboBoxNombreModulo.removeAllItems();
//        for (int i = 0; i < listaM.size(); i++) {
//            Vector fila = new Vector();
//            Modulo mo = (Modulo) listaM.get(i);
//            fila.add(mo.getNombreModulo());
//            jComboBoxNombreModulo.addItem(fila.get(0));
//        }
    }

//MODIFICAR/ELIMINAR: boton modificar nombre 
private void modificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_modificarActionPerformed
    int ind = jTableModulos.getSelectedRow();
    if (ind < 0) {
        JOptionPane.showMessageDialog(this, "Debe seleccionar un módulo para modificar", "Modificar Módulo", JOptionPane.INFORMATION_MESSAGE);
    } else {
        nombreModulo = jTextFieldNombre.getText();
//        fechaBaja = jTextFieldFechaBajaModulo.getText();
        modulo = (Modulo) listaM.get(ind);
        String nombreModuloOriginal = modulo.getNombreModulo();
        if( !nombreModuloOriginal.equals(nombreModulo)){
            if (verificar(nombreModulo) && (Validador.getInstance().esFechaValida(fechaBaja) || fechaBaja.equals(""))) {//Validador.getInstance().obtenerFechaSistema();//validador.getInstance().soloContieneLetrasYEspacios(nombre)
                modulo.setNombreModulo(nombreModulo);
                modulo.setFechaFin(fechaBaja);
                try {
                    controladorModulo.modificarModulo(modulo);
                    JOptionPane.showMessageDialog(this, "La modificación fue realizada de forma Exitosa", "Modificar módulo", JOptionPane.INFORMATION_MESSAGE);
                    cargarTabla();
                    //cargarComboModulos();
                    limpiarCampos();
                } catch (Exception e) {
                    //System.out.println(e);
                    //System.out.println("No se pudo modificar el Modulo");
                }
            }
        }
        else{
            if ( Validador.getInstance().esFechaValida(fechaBaja) || fechaBaja.equals("")) {//Validador.getInstance().obtenerFechaSistema();//validador.getInstance().soloContieneLetrasYEspacios(nombre)
                //area.setNombreArea(nombreArea);
                modulo.setFechaFin(fechaBaja);
                try {
                    controladorModulo.modificarModulo(modulo);
                    JOptionPane.showMessageDialog(this, "La modificación fue realizada de forma Exitosa", "Modificar módulo", JOptionPane.INFORMATION_MESSAGE);
                    cargarTabla();
                    //cargarComboAreas();
                    limpiarCampos();
                } catch (Exception e) {
                    //System.out.println(e);
                    //System.out.println("No se pudo modificar el módulo");
                }
            }
        }
    }
}//GEN-LAST:event_modificarActionPerformed

    private void cargarCampos() {
        int fila = jTableModulos.getSelectedRow();
        Modulo m = new Modulo();
        m = (Modulo) listaM.get(fila);
        jTextFieldNombre.setText(m.getNombreModulo());
//        jTextFieldFechaBajaModulo.setText(m.getFechaFin());
    }

    //al iniciar componentes, al guardar (alta), al modificar y al eliminar cargo esta tabla q está en la ficha MODIFICAR/ELIMINAR: jtablemodulos
    private void cargarTabla() {
        String[] encabezados = new String[2];
        encabezados[0] = "Nombre Módulo";//Nombre de
        encabezados[1] = "Fecha Baja";
        tableModel = new TablaPersonalizada(encabezados);
        jTableModulos.setModel(tableModel);
        jTableModulosListar.setModel(tableModel);
        try {
            listaM = controladorModulo.buscarTodosModulo();
            //System.out.println("tamaño de lista Modulos" + listaM.size());
            for (int i = 0; i < listaM.size(); i++) {
                Vector fila = new Vector();
                Modulo mo = (Modulo) listaM.get(i);
                fila.add(mo.getNombreModulo());
                fila.add(mo.getFechaFin());//Agregada por Analía
                tableModel.addRow(fila);
            }
        } catch (Exception e) {
            //System.out.println(e);
            //System.out.println("No se pudieron recuperar los Modulos");
        }
    }

    //una vez q modifico o elimino limpio el text hasta q vuelva a seleccionar en la tabla
    private void limpiarCampos() {
        jTextFieldNombre.setText("");
//        jTextFieldFechaBajaModulo.setText("");
    }
    
//MODIFICAR/ELIMINAR: boton eliminar nombre 
private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eliminarActionPerformed
    int ind = jTableModulos.getSelectedRow();
    if (ind < 0) {
        JOptionPane.showMessageDialog(this, "Debe seleccionar un Módulo para eliminar", "Eliminar Módulo", JOptionPane.INFORMATION_MESSAGE);
    } else {
        //nombreModulo = jTextFieldNombre.getText();
        modulo = (Modulo) listaM.get(ind);
        jTextFieldNombre.setText(modulo.getNombreModulo());//esto lo hago por q si 1º intenté modificar el nombre y no pude, es p q me vuelva a poner el nombre original de la tabla, q es el q voy a eliminar
//        jTextFieldFechaBajaModulo.setText(modulo.getFechaFin());//esto lo hago por q si 1º intenté modificar la fecha fin y no pude, es p q me vuelva a poner la fecha fin original de la tabla, q es la q voy a intentar eliminar
        int rta = JOptionPane.showConfirmDialog(this, "Está seguro que desea ELIMINAR el Módulo:\n " + modulo.getNombreModulo() + " ?", "Eliminar Módulo", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
        if (rta == 0) {
            fechaBaja = Validador.getInstance().obtenerFechaSistema();
            //System.out.println("La fecha de hoy es: " + fechaBaja);
            modulo.setFechaFin(fechaBaja);
            try {
                //System.out.println("entro al try p modificar el modulo y asignarle fecha de baja");
                controladorModulo.modificarModulo(modulo);
                //System.out.println("Eliminar: modifico el modulo y le asigno fecha de baja");
                //tengo q buscar todos los ram con el id del modulo modificada
                try {
                    //System.out.println("entro al try p buscar todos los ram con idarea como la de baja");
                    listaRAM = controladorRolAreaModulo.buscarRolareamodulo_X_idRol_idArea_idModulo(null, null, modulo);
                    //System.out.println("recupera todos los ram con idmódulo como la de baja");
                    for (int i = 0; i < listaRAM.size(); i++) {
                        //System.out.println("entra al for p ir recuperando de a un ram con idmódulo como la de baja");
                        Rolareamodulo rolaremod = (Rolareamodulo) listaRAM.get(i);
                        rolaremod.setVisible(false);
                        try {
                            controladorRolAreaModulo.modificarRolAreaModulo(rolaremod);
                            //System.out.println("Eliminar: modificó el rolareamodulo q tiene idmódulo como la de baja y le asigno visible false");
                        } catch (Exception e) {
                            //System.out.println(e);
                            //System.out.println("Eliminar: No se pudo modificar el rolareamodulo del ram con idmódulo como la de baja p asignarle visible false");
                        }
                    }
                } catch (Exception e) {
                    //System.out.println(e);
                    //System.out.println("No se pudieron recuperar los ram con idmódulo como la de baja");
                }
                JOptionPane.showMessageDialog(this, "La eliminación fue realizada de forma Exitosa", "Eliminar módulo", JOptionPane.INFORMATION_MESSAGE);
                cargarTabla();
                //cargarComboAreas();
                limpiarCampos();
            } catch (Exception e) {
                //System.out.println(e);
                //System.out.println("Eliminar: No se pudo modificar el módulo asignandole fecha baja");
            }
        }
        //////////////////////////////////////////////////////////
        //}else{JOptionPane.showMessageDialog(this, "El área seleccionada ya está de baja", "Eliminar área", JOptionPane.INFORMATION_MESSAGE);}//si el area tiene fecha de baja entonces no la puedo dar de baja
    }
}//GEN-LAST:event_eliminarActionPerformed

//LISTAR: boton buscar
/////////////////LISTAR////////////////////
//AGREGAR PROVEEDORES: boton guardar
//AGREGAR PROVEEDORES: boton eliminar
private void jTableModulosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableModulosMouseClicked
    cargarCampos();
}//GEN-LAST:event_jTableModulosMouseClicked

private void jTableModulosListarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableModulosListarMouseClicked
    //cargarCampos();
}//GEN-LAST:event_jTableModulosListarMouseClicked

private void jTextFieldUsuario5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldUsuario5ActionPerformed
    // TODO add your handling code here:
}//GEN-LAST:event_jTextFieldUsuario5ActionPerformed

//////////////////LISTAR///////////////

    private boolean verificar(String nombre) {
        boolean ver = false;
        if ( nombre == null ? "" != null : nombre.equals("")) {
            JOptionPane.showMessageDialog(this, "Por favor ingrese nombre", "Error", JOptionPane.ERROR_MESSAGE);

        } else if (!validador.getInstance().soloContieneLetrasYEspacios(nombre)) {
            JOptionPane.showMessageDialog(this, "Nombre inválido: Ingrese sólo letras y espacios para nombre.", "Error", JOptionPane.ERROR_MESSAGE);
        } else if (repetido(nombre)) {
            JOptionPane.showMessageDialog(this, "El nombre ya está utilizado", "Error", JOptionPane.ERROR_MESSAGE);
        } else {
            ver = true;
        }
        return ver;
    }

    private boolean repetido(String nombre) {//si esta repetido devuelve true
        boolean estarepetido = false;
        Modulo operar = new Modulo();
        try {
            operar = controladorModulo.buscarModuloNombre(nombre);
            estarepetido = true;
            //System.out.println("Encontró el nombre en un elemento");
        } catch (Exception e) {
            //System.out.println("No está repetido el mismo nombre en otro elemento");
        }
        return estarepetido;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel ButtBuscar;
    private javax.swing.JButton eliminar;
    private javax.swing.JButton jButtonGuardar;
    private javax.swing.JButton jButtonSalir;
    private javax.swing.JLabel jLabel12NombreModulo;
    private javax.swing.JLabel jLabel14NombreModulo;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel18;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTableModulos;
    private javax.swing.JTable jTableModulosListar;
    private javax.swing.JTextField jTextFieldNombre;
    private javax.swing.JTextField jTextFieldNombreModulo;
    private javax.swing.JTextField jTextFieldUsuario5;
    private javax.swing.JButton modificar;
    // End of variables declaration//GEN-END:variables

    ///////////////AGREGAR PROVEEDOR A PRODUCTO:

    private void cargarComboNombreProdAgregar() {
    }

    private void cargarComboRazonAgregar() {
    }

    private void mostrarEnLaTabla(Proveedorproducto pp) {
    }

    private void limpiarCamposProdAgregar() {
    }

    private void limpiarDatos() {
    }

    private void limpiatDatos() {
    }

    private void limpiarDatos1() {
    }
}
